SYS.Messenger = SYS.extend(SYS.Module,{
	isHide:true,
	isInited:false,
	isSeller:false,//Có phải người bán không.
	content:'',
	products:{},
	custom_product_id:0,
	currentNick:'',
	buddyQueue:[],
	buddies:[],
	buddyList:{},//Danh sách tất cả những thành viên online trên hệ thống
		friendList:[],//Danh sách bạn chat yêu thích
		chatterList:[],//Danh sách những người đang chat
		lastTime:0,//THời gian cuối cùng người mua nhận được message
		CHAT_TIMEOUT:120, //Thời gian tối đa để chờ bạn chat trả lời tính bằng giây
	requestingNick:'',
	requestingTime:0,
	startTime:0,
	dontOpenChatWindow:false,
	blink:false,// Trạng thái cho phép nhấp nháy số message chat không?
	response: false,//Đã trả lời đồng ý bạn chat chưa?
	lastTimeout:0,//Trả về giá trị của hàm setTimeout cuối cùng
	isIdle:0,
	isSelectFavourist:false,//Kiểm tra xem nick đang request có phải từ favourist không?
	isSelectFromList:false,//Kiểm tra xem nick đang request có phải từ danh sách salesman không?
	checkReady:false,  //kiểm tra trạng thái sẵn sàng chat của TVV
	SelectFromListTime:0,//Kiểm tra xem nick đang request có phải từ danh sách salesman không?
	isMouseClickOutside:1,
	districts:'', //Khoanb Edit 31.08.09
	init:function(success)
	{
		SYS.User.id = this.userId;
		SYS.load(this.path + "/+s/style.css");
		var that = this;
		SYS.vimuaChat = this;
		this.currentWindow = this.sellerId;
		this.libPath = 'portals/vimua/modules/Messenger/js/';
		this.imgPath = 'portals/vimua/modules/Messenger/+i/';
		setInterval(function(){
			$.get(that.submitURL({module:'Messenger'}));
		},300000);
		$('body').mousemove(function(){
			if(!SYS.vimuaChat.isHide) {
				SYS.Messenger.endBlink();
			}
			return true;
		});
		$.ajax({
			url:staticURL + 'data/vimua/emoticons.xml',
			success:function(data) {
				var icons = SYS.xml($('icons', data));
				$.extend(SYS.Messenger, {
					emoticons : icons
				});
				for (var i = 0; i < SYS.Messenger.emoticons.length; i++) {
					SYS.Messenger.emoticons[i].regExpr = new RegExp(SYS.Messenger.emoticons[i].shortcut.replace(/([^\s\w])/ig, '\\$1'), 'gi');
				}
			}
		});
		
		//Khoanb Edit 31.08.09 -- Load location
		if(this.isSeller){
			$.getJSON(rootURL+'publish/vimua/location/location.'+this.ver+'.js',function(){
				this.districts = locations.districts_json;
				this.locations = locations.locations;
				this.transport_fee = locations.transport_fee;
				this.zone_location = locations.zone_location;
			});
		}		
		
		SYS.Module.prototype.init.call(SYS.vimuaChat, success);
		this.initEvents();
		this.disableForm();
		$('body').click(function(){
			if (SYS.vimuaChat.isMouseClickOutside && !SYS.vimuaChat.isHide) {
				SYS.vimuaChat.hideWindow();
			}
			SYS.vimuaChat.isMouseClickOutside = 1;
			return true;
		});
		$('#viskybar').click(function(){
			SYS.vimuaChat.isMouseClickOutside = 0;
		});
		$('#vimuachat *').click(function(){
			SYS.vimuaChat.isMouseClickOutside = 0;
		});
		$('#dialog'+this.id).parent().click(function(){
			SYS.vimuaChat.isMouseClickOutside = 1;
		});
	},
currentProductId:function() {
		if(this.currentNick && this.buddyList[this.currentNick] && this.buddyList[this.currentNick].productId)
		{
			return this.buddyList[this.currentNick].productId;
		}
		else
			return false;
	 },
checkState:function() {
		// lấy thời điểm hiện tại (tính bằng giây "s")
		var t= new Date().getTime()/1000;
		if (t-this.lastTime>(SYS.vimuaChat.CHAT_TIMEOUT+300) && !this.isIdle) {
			this.lastTime = t;
			this.isIdle = true;
			this.broadcastMessage('!@#IDLE');
		}
		for (var i = 0; i < this.chatterList.length; i++)
		{
			var nick=this.chatterList[i]
			if (((t - SYS.vimuaChat.buddyList[nick].lastTime) > SYS.vimuaChat.CHAT_TIMEOUT) )
			{
				SYS.vimuaChat.buddyList[nick].lastTime=t;
				this.showSystemNotice('Đã quá ' + SYS.vimuaChat.CHAT_TIMEOUT/60 + ' phút mà '+SYS.vimuaChat.chatterList[i]+' chưa trả lời. Bạn có muốn đợi không?<p class="txtr"><span class="confirm_yes span-button"	onclick="SYS.vimuaChat.continueWaiting(\''+nick+'\');$(this).parent().parent().remove();"	>Có</span>\
					&nbsp|&nbsp<span class="confirm_no span-button" onclick="SYS.vimuaChat.sendDisconnectMessage(\''+nick+'\');$(this).parent().parent().remove(); " >Không</span></p>',	8000, 
					function(){
						SYS.vimuaChat.continueWaiting(nick);
					});
			}
		}
		SYS.Messenger.debug('checkState:'+this.chatterList.length+', '+this.requestingNick+','+this.isSeller+','+(t-this.requestingTime)+',30');
		if(this.chatterList.length == 0 && !this.isSeller && (!this.requestingNick || (t-this.requestingTime) > 10))
		{
			
			this.requestingTime = t;
			if(this.requestingNick)
			{
				this.buddyQueue=SYS.Messenger.arrayRemove(this.buddyQueue,this.requestingNick);
				this.buddyQueue.push(this.requestingNick);
			}
			SYS.Messenger.debug('checkState time:'+(t-SYS.vimuaChat.SelectFromListTime)+','+SYS.vimuaChat.isSelectFromList);
			this.requestingNick = '';
			if (!SYS.vimuaChat.isSelectFromList) {
				SYS.Messenger.debug('checkState->selectSeller->'+','+SYS.vimuaChat.isSelectFromList);
				this.selectSeller();
			}else{
				SYS.Messenger.debug('time:'+(t-SYS.vimuaChat.SelectFromListTime));
				if ((t-SYS.vimuaChat.SelectFromListTime) > 15 && SYS.vimuaChat.SelectFromListTime > 0){
					$('#chat-connect-ttv-loadding').html('')
					var notice = 'Không thể kết nối với TVV bạn yêu cầu. Bạn có muốn hệ thống chọn TVV cho bạn không?\
						<p class="txtr"><span class="confirm_yes span-button"	onclick="SYS.vimuaChat.isSelectFromList = false;$(this).parent().parent().hide();SYS.vimuaChat.isMouseClickOutside = 0;"	>Đồng ý</span>\
						&nbsp|&nbsp<span class="confirm_no span-button"	onclick="SYS.vimuaChat.SelectFromListTime=SYS.vimuaChat.SelectFromListTime+300000;$(this).parent().parent().hide(); SYS.vimuaChat.isMouseClickOutside = 0;" >Không đồng ý</span></p>' ;
					this.showSystemNotice(notice,5000,1);
				}
			}
		}
	},
	continueWaiting: function(nick)
	{
		SYS.vimuaChat.buddyList[nick].lastTime = new Date().getTime()/1000 + SYS.vimuaChat.CHAT_TIMEOUT*2;
	},
	showSystemNotice:function(content,timeout,show, success)
	{
		/*
		 * String content : nội dung thông báo
		 * Int timeout: thời gian hiện thị thông báo nếu là 0 là hiện mãi mãi
		 * int show: có hiển thị cửa sổ chat khi hiện thông báo này không? 0 là không hiện ngược lại là  hiện
		 * 
		 * function success: chức năng mở rộng 
		 * */
		var that =  this;
		var id='system-notice'+ new Date().getTime();
		var newContent='<DIV class="system-notice" style="padding: 5px; z-index:1001; margin: 5px; border: 1px solid #cfcdcd; background: #f0f6fb;color:#5b7b96;" id="'+id+'\" >'+content+'</div>';
		if (typeof(show)!='undefined' && show)
			this.showWindow();
		var currentPanel=(SYS.vimuaChat.currentNick!=''?$('#tabPane'+that.id+'_'+SYS.vimuaChat.currentNick):$('#tabPane'));
		currentPanel.append(newContent);
		currentPanel.scrollTop(currentPanel.height());
		$('#tabPane').scrollTop($('#tabPane').height());
		newContent = $('#'+id).html();
		$(".system-notice").each(function(){
			if($(this).attr('id') != id && $(this).html() == newContent)
			{
				$(this).remove();
			}
		});
		if (timeout>0){
			setTimeout(function(){
				if($('#'+id).length)
				{
					$('#'+id).remove();
					if(typeof(success)=='function')
						success.call(SYS.vimuaChat);
				}
			}, timeout);
		}
		return id;
	},
	showChatWindow:function(userId)// Hiển thị cửa sổ chat của một người
	{
		$('#tabs'+this.id+' .messagePanel').hide();
		$('#tabPane'+this.id+'_'+userId).show();
				$('.show-room').hide();
				$('#vimuachat_show'+SYS.vimuaChat.id+'_'+userId).show();
		var node = $('#message_count_'+SYS.vimuaChat.id +'_' + userId);
		if (parseInt(node.html())==node.html())
			node.html(' ').css('background-color','transparent');
	},
	showWindow:function() //Hiển thị khung cửa sổ chat
	{
		var that=this;
		try {
			if (SYS.User.id.match('Guest_')){
				this.initChatEvents();
			}
		} catch(Exception) {}
		if(!this.dontOpenChatWindow)
		{
			if (this.isHide)
			{
				if (!this.isInited){
					var notice = !this.isSeller?'Chào mừng bạn đến với Vimua. Bạn có muốn tư vấn viên của chúng tôi phục vụ bạn không?\
								<p class="txtr vimuachat-hello-box"><span class="confirm_yes span-button"	onclick="$(this).parent().parent().hide();SYS.vimuaChat.initChatEvents();"	>Có</span>\
								&nbsp|&nbsp<span class="confirm_no span-button"	onclick="SYS.vimuaChat.dontOpenChatWindow=true; $(this).parent().parent().hide();SYS.vimuaChat.hideWindow();" >Không</span></p>':
								'Chào mừng bạn đến với Vimua. Bạn có muốn tham gia tư vấn cho người mua không?\
								<p class="txtr vimuachat-hello-box"><span class="confirm_yes span-button"	onclick="$(this).parent().parent().hide();SYS.vimuaChat.initChatEvents();" >Có</span>\
								&nbsp|&nbsp<span class="confirm_no span-button"	onclick="SYS.vimuaChat.dontOpenChatWindow=true; $(this).parent().parent().hide();SYS.vimuaChat.hideWindow();">Không</span></p>';
					$('.vimuachat-hello-box').parent().hide();
					//if (that.isSeller)
					this.showSystemNotice(notice,0);
				}else{
					if (SYS.vimuaChat.currentNick!='')
					{
						var currentPanel=$('#tabPane'+this.id+'_'+SYS.vimuaChat.currentNick);
						currentPanel.parent().scrollTop(currentPanel.height());
					}
				}
				$('#vimuachat_holder .shadow').fadeIn();
				$('#vimuachat_holder').slideDown();
				$('#vimuachat').show().slideDown();
				this.isHide=false;
			}
			SYS.vimuaChat.blink=false;
			$('#vimua-message-count').html(0);
		}
	},
	hideWindow:function()
	{
		if (!this.isHide)
		{
			$('#vimuachat').slideUp();
			$('#vimuachat_holder .shadow').fadeOut();
			$('#vimuachat_holder').slideUp();
			$('#vimua-message-count').html(0);
		}
		this.isHide=true;
		SYS.vimuaChat.blink=false;
	},
	alertC: function(){
		$.get(this.submitURL({module:'Messenger',cmd:'getListCustomer',id:SYS.User.id}),function(response){
			alert(response);
		});
	},
	listCus: function(){
		$.get(this.submitURL({module:'Messenger',cmd:'listcus',buddyList:$.toJSON(this.buddyList)}),function(response){
			alert(response);
		});
	},
	clearCacheC: function(){
		$.get(this.submitURL({module:'Messenger',cmd:'clearListCustomer',id:SYS.User.id}),function(response){
			alert(response);
		});
	},
	submitNick:function () //Đăng ký người dùng hiện tại vào hệ thống chat
	{
		var that = this;
		SYS.Messenger.debug('submitNick:'+SYS.User.id+','+(this.isSeller?'b':'m'));
		SYS.Messenger.createBuddyTable(SYS.User.id,this.isSeller?'b':'m');
		// nếu không phải là khách và TVV thì chọn tư vấn viên cho user
		if (!SYS.vimuaChat.isSeller && !SYS.User.id.match('Guest_')) {
				window.setTimeout(function(){
					SYS.Messenger.debug('submitNick:->selectSeller');
					SYS.vimuaChat.selectSeller();
				},3000);
		}
		VkMessenger.addDataTableStartCallback("onstart",function() {
			//that.enableForm();
			});
		},
		signOut:function() {
			try {
				VkMessenger.signout();
			}
			catch(e) { }
		},
	enableForm:function() {
			$("#user_message").attr('disabled','');
			$("#message_button").attr('disabled','');
			$('#keyword'+this.id).attr('disabled','');
			$('#search'+this.id).attr('disabled','');
			$('#costInput'+this.id).attr('disabled','');
			$('#quick_price_eval').attr('disabled','');
		},
	 disableForm:function() {
			$("#user_message").attr('disabled','disabled');
			$("#message_button").attr('disabled','disabled');
			$('#keyword'+this.id).attr('disabled','disabled');
			$('#search'+this.id).attr('disabled','disabled');
			$('#costInput'+this.id).attr('disabled','disabled');
			$('#quick_price_eval').attr('disabled','disabled');
		},
	sendMessage:function(message,messageType) {
		
		// nếu không đăng nhập
		if (SYS.User.id.match('Guest_')) {
			// refresh time
			$.get(this.submitURL({module:'Messenger',cmd:'refresh',id:SYS.User.id}));
		}
		SYS.Messenger.endBlink();
		var that = this;
		if (VkMessenger.engineRef) {
			if (message == "") {
				if (messageType==SYS.Messenger.MESSAGE_TYPE)
									 $('#user_message').val('').focus();
						} else if (SYS.vimuaChat.currentNick=='') {
				SYS.vimuaChat.showSystemNotice("Chọn nick bạn muốn chat trước!",5000);
			} else {
				 SYS.Messenger.debug('Send message:'+messageType+'||'+message);
					this.isIdle = false;
					var type = "TEXT";
					SYS.vimuaChat.lastTime=new Date().getTime()/1000;
					if(messageType == SYS.Messenger.MESSAGE_TYPE && this.isSeller) {
					switch (message) {
						case 'price':
							if (this.currentProductId()!='') {
								this.sendMessage('Giá sản phẩm trước thuế ' + $('#price_'+this.id).text() + ' VND', SYS.Messenger.PRICE_TYPE);
								 $('#user_message').val('');
							}
							else
								this.showSystemNotice('Bạn chưa chọn sản phẩm!',3000,0,1);
							return;
						case 'tax':
							if (this.currentProductId()!='') {
								this.sendMessage('Giá sản phẩm sau khi tính thuế: ' + $('#tax_'+this.id).text() + ' VND', SYS.Messenger.PRICE_TYPE);
								 $('#user_message').val('');
							}
							else this.showSystemNotice('Bạn chưa chọn sản phẩm!',3000,0,1);
							return;
						case 'shipping':
							if (this.currentProductId()!='') {
								this.sendMessage('Phí vận chuyển đến '+ $('#VMC-zone option:selected').text()+' là ' + $('#shipping_fee_'+this.id).text() + ' VND', SYS.Messenger.PRICE_TYPE);
								 $('#user_message').val('');
							} else this.showSystemNotice('Bạn chưa chọn sản phẩm!',3000,0,1);
							return;
						case 'discount':
							if (this.currentProductId()!='')
							{
								this.sendMessage('Bạn được giảm ' + $('#discount_value_'+this.id).text() + ' VND', SYS.Messenger.PRICE_TYPE);
								 $('#user_message').val('');
							}
							else
								this.showSystemNotice('Bạn chưa chọn sản phẩm!',3000,0,1);
							return;
						case 'total':
							if (this.currentProductId()!='')
							{
								this.sendMessage('Tổng số tiền bạn phải trả là ' + $('#amount_'+this.id).text() + ' VND', SYS.Messenger.PRICE_TYPE);
								$('#user_message').val('');
							}
							else
								this.showSystemNotice('Bạn chưa chọn sản phẩm!',3000,0,1);
							return;
						case 'close':
							this.hideWindow();
							$('#user_message').val('');
							return;
						case 'signout':
							this.signOut();
							$('#user_message').val('');
							this.hideWindow();

							return;
						case 'clear':
							if(this.currentNick)
							{
								$('#tabPane'+this.id+'_'+this.currentNick).html('');
								$('#user_message').val('');
								return;
							}
							break;
						case 'clearDebug':
							if ($('#messenger-debug-region').length>0)
							{
								$('#messenger-debug-region>div').html('');
							}
							return;
					}
					if(message.substr(0, 7) == 'search ')
					{
						this.selFilter(message.substr(7));
						return;
					}
					}
					else
					{
						if(messageType == SYS.Messenger.MESSAGE_TYPE &&	message.substr(0, 8) == 'connect ' && SYS.Messenger.arraySearch(this.buddyQueue, message.substr(8)))
						{
							SYS.Messenger.debug('sendMessage:->selectSeller');
							this.selectSeller(message.substr(8));
							return;
						}
					}
									$('#user_message').val('').focus();
					var currentPanel=$('#tabPane'+this.id+'_'+SYS.vimuaChat.currentNick);
					var newContent = '';
					switch (messageType)
					{
					case SYS.Messenger.MESSAGE_TYPE:
						// nhận message
						if (message.length<400)
						{
							if(SYS.User.id.match('Guest_')){
								newContent ='<DIV><span class="user_a" title="'+SYS.vimuaChat.getTime()+'">'+ SYS.User.id +'</span><span class="textMessage">: '+SYS.Messenger.emoticon(message)+'</span></div>' ;
							}else{
								newContent ='<DIV><a	href="'+SYS.buildURL({page:(SYS.User.is_register_salesman==2)?'customer_profile':'salesman_profile',id:SYS.User.id})+'" title="'+SYS.vimuaChat.getTime()+'"><span class="user_a" >'+ SYS.User.id +'</span></a><span class="textMessage">: '+SYS.Messenger.emoticon(message)+'</span></div>' ;
							}
							if (!this.isSeller)
								SYS.vimuaChat.content+=newContent;
						}else{
							SYS.vimuaChat.showSystemNotice('Tin của bạn không được dài quá 400 kí tự!',3000);
							return;
						}
						break;
					case SYS.Messenger.QUOTE_MESSAGE_TYPE:
						if(!this.isSeller)
						{
							newContent ='<DIV class="messenger-quote-message"><label>Chuyển tiếp sang người bán khác:</label><span class="span-button" onclick="$(this).next().toggle();" >Xem nội dung trước</span><div style="display:none;"><quote>'+message+'</quote></div></div>' ;
						}
						break;
					case SYS.Messenger.PRICE_TYPE:
						newContent='<DIV class="alert"><span class="user_a" >'+ SYS.User.id +'</span><span class="textMessage">: '+message+'</span></div>' ;
						break;
					case SYS.Messenger.BUZZ_TYPE:
						newContent="<DIV class='salesmanBargain'><span class='user_a'>"+ SYS.User.id +": </span><span style='color:red; text-transform:uppercase; font-size:16px; font-weight:bold'>BUZZ!!!</span></div>" ;
						SYS.load('3rdparty/jQuery/jquery.ui/ui/effects.core.js',function(){
							SYS.load('3rdparty/jQuery/jquery.ui/ui/effects.shake.js',function(){
								$('#Bach').html('<embed height="1" width="1"	src="'+staticURL+'portals/vimua/modules/Messenger/sound.swf"' );
								currentPanel.effect('shake', {}, 50, function()
								{
									currentPanel.css('position', 'static');
								});
							});
						});
						break;
				 }
				 VkMessenger.sendMessage(SYS.User.id, SYS.vimuaChat.currentNick, messageType + '||' + message, type);
				 if(newContent && messageType!=SYS.Messenger.QUOTE_MESSAGE_TYPE)
				 {
					currentPanel.append(newContent);
					$('.VMC-show-hide'+SYS.vimuaChat.id).click(function(){
						SYS.vimuaChat.isMouseClickOutside = 0;
					})
				}
				currentPanel.parent().scrollTop(currentPanel.height());
			 }//else
			}

		},
	broadcastMessage:function(message)
		{
		SYS.Messenger.debug('VK.sendMassage:BROADCAST_TYPE,'+message);
				VkMessenger.sendMessage(SYS.User.id,'', SYS.Messenger.BROADCAST_TYPE + '||' + message, 'TEXT.');
	},
	drawMedia: function(type, productId, nick, src)
	{
		$('#listSearchChat').hide();
		if(!nick)
		{
			nick = this.currentNick;
		}
		if(nick && this.buddyList[nick] && this.products[productId])
		{
			if(this.buddyList[nick].productId != productId)
			{
				this.buddyList[nick].productId = productId;
				if((nick == this.currentNick) && this.isSeller )
				{
					this.updateProductPrice();
				}
			}
			var product = this.products[productId];
			$('#vimuachat_show'+this.id + '_' + nick +' .showroomDetail').hide();
			$('#product-name'+nick).html(product.name);
			$('#price'+nick).html(SYS.numberFormat(product.price*1000))
			if (this.isSeller)
			{
				$('#min-price'+nick).html(SYS.numberFormat(product.min_price*1000));
				if(product.quantity <=3){
					$('#lessProduct'+nick).html('<p><div style="clear:both;color:red;text-align: center;padding-left:15px;" title="Tư vấn viên cần confirm với Điều phối viên về việc còn hàng hay ko?"><Blink>Sắp hết hàng</Blink></div></p>');
				} else {
					$('#lessProduct'+nick).html('');
				}
			} else {
				$('#lessProduct'+nick).html('');
			}
			switch(type)
			{
			case SYS.Messenger.MEDIA_TYPE:
				if(product.media.indexOf(/\.flv/)){
					$('#video-tab'+nick).html('<p id="preview_'+nick+'_'+this.id+'"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>').show();
					var s1 = new SWFObject(staticURL+'3rdparty/mediaplayer/player.swf','player','338','250','9');
					s1.addParam('allowfullscreen','true');
					s1.addParam('allowscriptaccess','always');
					s1.skipDetect = true;
					s1.addParam('flashvars','file='+SYS.image(product.media));
					s1.addParam('wmode','transparent');
					s1.write('preview_'+nick+'_'+this.id);
				}
				else
				{
					$('#video-tab'+nick).html(
					'<object classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" \
					standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject" viewastext="" >\
					<param name="TransparentAtStart" value="false">\
					<param name="FileName" value="'+SYS.image(product.media)+'">\
					<param name="AutoStart" value="false">\
					<param name="AnimationatStart" value="false">\
					<param name="ShowControls" value="false">\
					<param name="ShowDisplay" value="false">\
					<param name="displaySize" value="0">\
					<param name="wmode" value="transparent">\
					<param name="Volume" value="100">\
					<embed type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" src="'+SYS.image(product.media)+'" name="MediaPlayer" transparentatstart="0" autostart="0" playcount="999" volume="100animationAtStart=0" displaysize="0" width="338" height="200"></embed>\
					</object><div style="clear:both;"></div>').show();
				}
				break;
			case SYS.Messenger.FLASH_TYPE:
				$('#flash-tab'+nick).html('<embed src="'+SYS.image(product.flash)+'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="328" height="200" wmode="transparent"></embed>').show();
				break;
			case SYS.Messenger.IMAGE_TYPE:
				$('#picture-tab'+nick).attr('src',SYS.image(src)).show();
				break;
			case SYS.Messenger.PROPERTIES_TYPE:
				$('#properties-tab'+nick).html(product.cache_all_properties).show();
				break;
			}
		}
	},
	sendPicture: function(data)
	{
		var image=data.split('||');
		this.drawMedia(SYS.Messenger.IMAGE_TYPE, image[1], this.currentNick, image[0]);
			SYS.vimuaChat.sendMessage(data, SYS.Messenger.IMAGE_TYPE);
	},
	sendVideo: function(data)
	{
		var image=data.split('||');
		this.drawMedia(SYS.Messenger.MEDIA_TYPE, image[1]);
			SYS.vimuaChat.sendMessage(data, SYS.Messenger.MEDIA_TYPE);
		},
	sendFlash: function(data)
	{
		var image=data.split('||');
		this.drawMedia(SYS.Messenger.FLASH_TYPE, image[1]);
				SYS.vimuaChat.sendMessage(data, SYS.Messenger.FLASH_TYPE);
	},
	sendProperties: function(productId)
	{
		this.drawMedia(SYS.Messenger.PROPERTIES_TYPE, productId);
				SYS.vimuaChat.sendMessage(productId, SYS.Messenger.PROPERTIES_TYPE);
	},
	sendPrice:function()
	{
		if (!this.currentProductId)
		{
			alert('Chưa có sản phầm nào để gửi giá');
		}
		$('#price-table table').hide();
		var product = this.products[this.buddyList[this.currentNick].productId];
		var minPrice=1000* product.min_price;
		var price =1000* product.price ;
		var advicePrice = $('#costInput'+ SYS.vimuaChat.id).val();
		if (parseInt(advicePrice)!=advicePrice)	{
						alert('Bạn phải nhập giá là số!');
						return false;
		}
		advicePrice=parseInt(advicePrice);
		if ((advicePrice >= minPrice)	&& (advicePrice <= price))
		{
			if (SYS.vimuaChat.buddyList[SYS.vimuaChat.currentNick].productId!='')
			{
//				var district_id = parseInt($('#VMC-district-select'+this.id).val());
//				if (district_id != 0) {
//					var shippingFee = this.calculateShippingFee($('#VMC-zone').val(), product.pack_weight,district_id,advicePrice);
//				}else{
//					var shippingFee = 0;
//				}
				var productId = SYS.vimuaChat.buddyList[SYS.vimuaChat.currentNick].productId;
				SYS.vimuaChat.sendMessage(advicePrice+'||'+productId,SYS.Messenger.SALESMAN_BARGAIN_TYPE);
				var newContent = '<div class="alert salesmanBargain"><span> Bạn vừa đề nghị </span><span class="user_b">'+ SYS.vimuaChat.currentNick +'</span><span> mua sản phẩm </span><span style="font-weight:bolt; color: #008000;">'+ this.products[productId].name +' </span> với giá '+SYS.numberFormat(advicePrice)+' VND</div>'
				var currentPanel=$('#tabPane'+this.id+'_'+SYS.vimuaChat.currentNick);
				currentPanel.append(newContent);
				currentPanel.parent().scrollTop(currentPanel.height());
			}
			else
			alert('Bạn chưa gửi sản phẩm cho người mua!');
		}
		else
		{
			if (advicePrice < minPrice )
			{
				alert('Giá bán phải là số và lớn hơn ' + minPrice + '!');
			}
			else
			{
				if (advicePrice > price )
				{
					alert('Giá bán phải nhỏ hơn ' + price + '!' );
				}
			}
		}
	},
	addWishlist:function() {
			if(SYS.User.id.match('Guest_')){
				alert('Bạn phải đăng nhập mới thực hiện được chức năng này');
				return;
			}
			if (SYS.vimuaChat.currentProductId()) {
				$.get(this.submitURL({module:'WishList',cmd:'add',id:SYS.vimuaChat.currentProductId()}));
			} else {
				var notice='Bạn chưa chọn sản phẩm!';
				this.showSystemNotice(notice,5000);
			}
		SYS.vimuaChat.isMouseClickOutside = 0;

	},
	addFavourite:function() {
			if(SYS.User.id.match('Guest_')){
				alert('Bạn phải đăng nhập mới thực hiện được chức năng này');
				return;
			}
		SYS.vimuaChat.isMouseClickOutside = 0;
		if (SYS.vimuaChat.currentNick)
		{
			if(SYS.vimuaChat.currentNick.match('Guest_')){
				alert('Bạn không thể thêm được tài khoản Guest vào danh sách ưu thích của bạn');
				return;
			}
			if (!SYS.Messenger.arraySearch(this.friendList,SYS.vimuaChat.currentNick))
			{
				$.get(this.submitURL({cmd:'make_friend',id:SYS.vimuaChat.currentNick}),function(response){
					if (parseInt(response)==1)
					{
						var newUser =	'<li id="VMC-fav-list-'+SYS.vimuaChat.currentNick +'\" style="white-space:nowrap;"><a href="javascript:SYS.vimuaChat.chooseCustomer(\''+SYS.vimuaChat.currentNick+'\');SYS.vimuaChat.isMouseClickOutside = 0;" >'+SYS.vimuaChat.currentNick+'</a></li>';
						this.friendList.push(SYS.vimuaChat.currentNick);
						$("#list-fav").append(newUser);
					}
					else
					{
						if ($('#VMC-fav-list-'+SYS.vimuaChat.currentNick).length()==0)
							$("#list-fav").append(newUser);
					}
				});
			}
			else
			{
				var notice=this.isSeller?'Người mua này đã có trong danh sách yêu thích!':'Người bán này đã có trong danh sách yêu thích!';
				this.showSystemNotice(notice,5000);
			}
		}
		else
		{
			var notice=this.isSeller?'Chưa có người mua nào!':'Chưa có người bán nào!';
				this.showSystemNotice(notice,5000);
		}
		},
	renderTextMsg:function(message, content, isQuote)
		{

		var userId = message.From;
		var newContent = '';
		if(typeof(isQuote)!='undefined' && isQuote)
		{
			newContent='<DIV class="messenger-quote-message "><label>Tiếp tục cuộc nói chuyện của khách:</label><span class="span-button" onclick="$(this).next().toggle();SYS.vimuaChat.isMouseClickOutside = 0; " >Xem nội dung trước</span><div style="display:none;"><quote>'+content+'</quote></div></div>' ;
		}
		else
		{
			newContent='<DIV><a href="'+SYS.buildURL({page:(SYS.User.is_register_salesman==2)?'customer_profile':'salesman_profile',id:message.From})+'"><span class="user_b" title="'+SYS.vimuaChat.getTime()+'">'+ message.From +'</span></a><span class="textMessage">: '+SYS.Messenger.emoticon(content)+'</span></div>' ;
			if (this.isHide)
			{
				$('#vimua-message-count').html((parseInt($('#vimua-message-count').html())+1));
			}
		}

		if (userId!=SYS.vimuaChat.currentNick)
		{
			if (this.isHide)
				$('#vimua-message-count').html((parseInt($('#vimua-message-count').html())+1));
			var node = $('#message_count_'+SYS.vimuaChat.id +'_' + userId);
			if (node.html()!=parseInt(node.html())) node.html(0);
			node.html(parseInt(node.html())+1).css('background-color','red');
			node.css('color','white');
		}
		if (!this.isSeller)
			SYS.vimuaChat.content+=newContent;
		var currentPanel=$('#tabPane'+this.id+'_'+userId);
		currentPanel.append(newContent);
 		currentPanel.parent().scrollTop(currentPanel.height());
		},
	renderBuzzMsg:function(message,msg)
		{
			var userId = message.From;
		var newContent="<DIV class='salesmanBargain'><span class='user_b'>"+ message.From +": </span><span style='color:red; text-transform:uppercase; font-size:16px; font-weight:bold'>BUZZ!!!</span></div>" ;
		var currentPanel=$('#tabPane'+this.id+'_'+userId);
		currentPanel.append(newContent);
		var that = this;
		SYS.load('3rdparty/jQuery/jquery.ui/ui/effects.core.js',function(){
			SYS.load('3rdparty/jQuery/jquery.ui/ui/effects.shake.js',function(){
					$('#Bach').html('<embed height="1" width="1"	src="'+staticURL+'portals/vimua/modules/Messenger/sound.swf"' );
					currentPanel.effect('shake', {}, 50, function()
				{
					currentPanel.css('position', 'static');
				});
			});
		});
		currentPanel.parent().scrollTop(currentPanel.height());
	},
	renderPriceMsg:function(message,content)//HIển thị các loại giá
	{
		var newContent='<DIV class="alert"><span class="user_b" >'+ message.From +'</span><span class="textMessage">:'+content+'</span></div>' ;
		var currentPanel=$('#tabPane'+this.id+'_'+message.From);
		currentPanel.append(newContent);
				currentPanel.parent().scrollTop(currentPanel.height());
	},
	renderCustomerBargainMsg:function(message,content)
		{

		var newContent='';
		var userId = message.To;
		if (message.From!=SYS.User.id)
		{
			userId = message.From;
		}
 		if (content==1)
 		{
			newContent="<DIV class='alert'><span class='user_b' style'color:red;'>"+ message.From +"</span><span class='textMessage'>: Đã đồng ý mua sản phẩm</span></div>" ;
		}
		else
		if(content==2)
		{
			newContent="<DIV class='alert'><span class='user_b' style'color:red;'>"+ message.From +"</span><span class='textMessage'>: Không đồng ý mua sản phẩm</span></div>" ;
		}
		var currentPanel=$('#tabPane'+this.id+'_'+userId);
		currentPanel.append(newContent);
				$('div .salesmanBargain').remove();
				currentPanel.parent().scrollTop(currentPanel.height());
		},
		renderSalesmanBargainMsg:function(message,content,productId)
		{
			var newContent='';
		var userId=message.From;
		SYS.vimuaChat.buddyList[userId].productId=productId
		newContent="<DIV class='alert salesmanBargain'><span class='user_a'>"+ message.From +"</span><span>:Bạn có đồng ý mua sản phẩm này với giá "+SYS.numberFormat(content*1)+" VND không?</span>\
				<p class='txtr'><span class='confirm_yes span-button'	onclick='SYS.vimuaChat.acceptPrice("+content+","+productId+"); $(this).parent().parent().hide();SYS.vimuaChat.isMouseClickOutside = 0;' >Đồng ý</span>\
				&nbsp|&nbsp<span class='confirm_no span-button'	onclick='SYS.vimuaChat.sendMessage(2,SYS.Messenger.CUSTOMER_BARGAIN_TYPE);$(this).parent().parent().hide();SYS.vimuaChat.isMouseClickOutside = 0;'>Không mua</span></p></div>" ;
		var currentPanel=$('#tabPane'+this.id+'_'+userId);
		$('.salesmanBargain').hide();
		currentPanel.append(newContent);
 		currentPanel.parent().scrollTop(currentPanel.height());
		},
	acceptPrice:function(price,productId)
	{
				SYS.vimuaChat.sendMessage(1,SYS.Messenger.CUSTOMER_BARGAIN_TYPE);
				if (!SYS.vimuaChat.isSeller)
				$.get(this.submitURL({cmd:'accept','product_id':productId, price:price,sellerId:SYS.vimuaChat.currentNick}),function(response){
				 	if (response=0) alert('Xin lỗi bạn hiện chúng tôi đã hết sản phẩm này!')
				 	else
				 	{
				var newContent="<DIV class='alert'><span class='textMessage'>Bạn đã đồng ý mua sản phẩm, sản phẩm của bạn đã được thêm vào giỏ hàng</span></div>" ;
				var currentPanel=$('#tabPane'+this.id+'_'+SYS.vimuaChat.currentNick);
				currentPanel.append(newContent);
				currentPanel.parent().scrollTop(currentPanel.height());
				SYS.Page.load({'url_mode':'ajax','page':'cart'});void(0);
				 		$('#cart-product-count').html((parseInt($('#cart-product-count').html())+1));
				SYS.vimuaChat.hideWindow();
				 	}

				});
		},
		renderMedia: function(message,productId,success)
		{
		if(!this.products[productId])
		{
						SYS.vimuaChat.selectProduct(message.From, productId, success, 1);
				}
				else
		{
			success.call(this);
		}

		} ,
		renderImage:function(message,messageContent,productId)
		{
		if (message.From!=SYS.User.id)
		{
			this.renderMedia(message,productId,function(){
				this.drawMedia(SYS.Messenger.IMAGE_TYPE, productId, message.From, messageContent);
			});

				}
		 },
		renderVideo:function(message,messageContent,productId)
		{
		if (message.From!=SYS.User.id)
		{
			this.renderMedia(message,productId,function(){
				this.drawMedia(SYS.Messenger.MEDIA_TYPE, productId, message.From);
			});
				}
		},
		renderFlash:function(message,messageContent,productId)
		{
			 	if (message.From!=SYS.User.id)
		{
			this.renderMedia(message,productId,function(){
				this.drawMedia(SYS.Messenger.FLASH_TYPE, productId, message.From);
			});
				}
		},
		renderProperties:function(message, productId)
		{
		if (message.From!=SYS.User.id)
		{
			this.renderMedia(message,productId,function(){
				this.drawMedia(SYS.Messenger.PROPERTIES_TYPE, productId, message.From);
			});
				}
		},
		getTime:function()
	{
		var today=new Date();
		var h=today.getHours();
		var m=today.getMinutes();
		var s=today.getSeconds();
		m=m<10?'0'+m:m;
		s=s<10?'0'+s:s;
		t=h+":"+m+":"+s;
		return t;
	},
	addTab:function(userId)
	{
		if((userId != SYS.User.id))
		{
			this.addNick(userId);
			this.enableForm();
			if($('#tabPane'+SYS.vimuaChat.id+'_'+userId).length == 0)
			{
				$('#tabPane').append('<div id="tabPane'+SYS.vimuaChat.id+'_'+userId+'" class="messagePanel"></div>');
			}
					if($('#vimuachat_show'+SYS.vimuaChat.id+'_'+userId).length == 0)
					{
							$('#vimuachat-show').after('<div id="vimuachat_show'+SYS.vimuaChat.id+'_'+ userId +'" style="display:none; " class="show-room vimuachat-show vimuachat_show">'+ $('#vimuachat-show').html() +'</div>');
					}
		}
	},
	removeWindow:function(userId)
	{
		if($('#tabPane'+SYS.vimuaChat.id+'_'+userId).length > 0){
			$('#tabPane'+SYS.vimuaChat.id+'_'+userId).remove();
		}
		if ($('#vimuachat_show' + SYS.vimuaChat.id + '_' + userId).length > 0) {
			$('#vimuachat_show' + SYS.vimuaChat.id + '_' + userId).remove();
		}
			
	},
		buzz:function()
	{
		this.sendMessage('Buzz',SYS.Messenger.BUZZ_TYPE);

	},
	loadDialog:function(success)
	{
		SYS.load('3rdparty/jQuery/jquery.ui/ui/ui.core.js',function(){
			SYS.load('3rdparty/jQuery/jquery.ui/ui/ui.dialog.js',
				'3rdparty/jQuery/jquery.ui/ui/ui.resizable.js',
				'3rdparty/jQuery/jquery.ui/ui/ui.draggable.js', function(){
				SYS.load(SYS.vimuaChat.libPath+'SYS.Messenger.Dialog.js', function(){
					success.call(SYS.vimuaChat);
				});
			});
		});
	},
	showEmoticonDialog:function()
	{
		if(typeof(this.emoticonDialog) == 'undefined')
		{
			var that = this;
			this.loadDialog(function(){
				SYS.load(that.libPath+'SYS.Messenger.Dialog.Emoticon.js', function(){
					that.emoticonDialog = new SYS.Messenger.Dialog.Emoticon();
					that.emoticonDialog.show();
				});
			});
		}
		else
		{
			this.emoticonDialog.show();
		}
	},
	typing:function(st)
	{
		SYS.vimuaChat.isMouseClickOutside = 0;
		var input = $('#user_message');
		if(input.val() == 'Gửi thông điệp...')
		{
			input.val(st);
			input.removeClass('example');
		}
		else
		{
			input.val(input.val()+st);
		}
		input.focus();

	},
	canChat:function(nick)
	{
		if (typeof(SYS.vimuaChat.buddyList[nick])=='undefined') {
			return false;
		}
		if (!this.isSeller) {
			var available =	(SYS.vimuaChat.buddyList[nick].chatCounter < SYS.vimuaChat.MAXIMUM_CHAT_ACCOUNTS);
		} else {
			var available =	(parseInt(SYS.vimuaChat.buddyList[nick].chatCounter) < 1);
		}
		return available;
	},
	selectSeller:function()
	{
		var seller='';
		SYS.Messenger.debug('selectSeller:'+this.requestingNick+','+$.toJSON(this.buddyQueue));
		if (!this.requestingNick)
		{
			//Chọn người bán từ danh sách người bán,
			if (SYS.vimuaChat.buddyQueue.length > 0)
			{	for(var i in this.buddyQueue)
				{
					seller=this.buddyQueue[i];
					if(this.canChat(seller))
					{
						if (seller && !SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList, seller))
						{
							SYS.vimuaChat.requestingNick = seller;
							this.requestingTime = new Date().getTime()/1000;
							SYS.vimuaChat.requestConnect(seller);
							this.buddyQueue = SYS.Messenger.arrayRemove(this.buddyQueue,seller);
							this.buddyQueue.push(seller);
							return seller;
						}
					}
				}
			}
			this.showSystemNotice("Hệ thống đang tìm tư vấn viên! Hệ thống sẽ báo cho bạn ngay khi kết nối được với tư vấn viên!",6000);
			/*setTimeout(function(){
				if (SYS.vimuaChat.currentNick=='')
					SYS.vimuaChat.hideWindow();
			},10000);*/
		}
		return false;
	},
	requestConnect:function(nick)
	{
		SYS.Messenger.debug('call requestConnect to:'+nick);
		if(nick != 'undefined'){
			SYS.Messenger.debug('call VK.sendMassage:REQUEST_CONNECT_TYPE,'+nick);
			VkMessenger.sendMessage(SYS.User.id,nick,SYS.Messenger.REQUEST_CONNECT_TYPE+'||','TEXT');
		}
	},
	processRequest:function(nick)
	{
		SYS.Messenger.debug('processRequest:'+SYS.vimuaChat.chatterList.length+' < '+SYS.vimuaChat.MAXIMUM_CHAT_ACCOUNTS);
		var that=this;
		if (SYS.Messenger.arraySearch(this.chatterList,nick))
		{
			SYS.vimuaChat.acceptConnect(nick);
			return;
		}

		if (parseInt(SYS.vimuaChat.chatterList.length) >= parseInt(SYS.vimuaChat.MAXIMUM_CHAT_ACCOUNTS))
		{
			this.denyConnect(nick);
		}
		else
		{
			this.showWindow();
			this.response=false;
			if (this.isSeller)
			{
				var notice = 'Người mua <span class="user_a">'+ nick +'</span> cần được phục vụ. Bạn có đồng ý phục vụ không?\
						<p class="txtr"><span class="confirm_yes span-button"	onclick="SYS.vimuaChat.acceptConnect(\''+nick+'\');$(this).parent().parent().hide();SYS.vimuaChat.isMouseClickOutside = 0;"	>Đồng ý</span>\
						&nbsp|&nbsp<span class="confirm_no span-button"	onclick="SYS.vimuaChat.denyConnect(\''+nick+'\');$(this).parent().parent().hide(); SYS.vimuaChat.isMouseClickOutside = 0;" >Không đồng ý</span></p>' ;
				this.showSystemNotice(notice,5000,1, function(){
					if (!SYS.vimuaChat.response)SYS.vimuaChat.denyConnect(nick);
				});
			}
		}
	},
	acceptConnect:function(nick)
	{
		this.response=true;
		SYS.Messenger.debug('acceptConnect: '+nick);
		var that = this;
		$.getJSON(this.submitURL({cmd:'select_user',user_id:nick}),function(user){
			$.extend(that.buddyList[nick], user);
			$('#VMC-zone').val(user.zone_id);
			that.changeProvince(user.zone_id);
		});
		VkMessenger.sendMessage(SYS.User.id,nick,SYS.Messenger.CONNECT_TYPE+'||','TEXT');

		if(this.lastTimeout)
		{
			clearTimeout(this.lastTimeout);
			this.lastTimeout = false;
		}
		this.showSystemNotice('Kênh chat đã được thiết lập!',5000);
		this.addTab(nick);
		this.nickFocus(nick);
		//Nen co setTimeout de dam bao chinh xac tuyet doi
	},
	denyConnect:function(nick)
	{
		this.response=true;
		if(this.lastTimeout)
		{
			clearTimeout(this.lastTimeout);
			this.lastTimeout = false;
		}
		SYS.Messenger.debug('VK.sendMassage:DENY_CONNECT_TYPE,'+nick);
		//VkMessenger.sendMessage(SYS.User.id,nick,SYS.Messenger.DENY_CONNECT_TYPE+'||','TEXT');
	},
	sendDisconnectMessage:function(nick)//Từ chối kết nối
	{
		SYS.Messenger.debug('<b>sendDisconnectMessage</b>');
		VkMessenger.sendMessage(SYS.User.id,nick,SYS.Messenger.DISCONNECT_TYPE+'||','TEXT');
		if (SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList,nick))
		{
			$('#VMC-chatter-' + nick).remove();
			SYS.vimuaChat.chatterList=SYS.Messenger.arrayRemove(SYS.vimuaChat.chatterList, nick);
		}
		if (!this.isSeller && this.currentNick==nick)
		{
			this.currentNick='';
			SYS.vimuaChat.showSystemNotice('Hệ thống đang tìm người bán mới cho bạn!',6000);
			SYS.vimuaChat.selectSeller();
		}
	},
	proccessDenyconnect:function(nick)
	{
		SYS.vimuaChat.buddyQueue=SYS.Messenger.arrayRemove(SYS.vimuaChat.buddyQueue,nick);
		SYS.vimuaChat.buddyQueue.push(nick);
		SYS.vimuaChat.requestingNick = '';
		if(this.isSeller) {
			SYS.vimuaChat.selectSeller();
		}
		// từ chối connect chọn không thành công
		SYS.Messenger.debug('Deny: '+ nick +this.isSelectFavourist);
		this.isSelectFavourist=false;
	},
	proccessDisconnect:function(nick,isSignout)// Xử lý trường hợp bị từ chối kết nối
	{
			if (isSignout)
		{
			if (!SYS.Messenger.arraySearch(SYS.vimuaChat.buddyQueue,nick))
				SYS.Messenger.arrayRemove(SYS.vimuaChat.buddyQueue,nick);
			if (SYS.Messenger.arraySearch(SYS.vimuaChat.friendList,nick))
			{
				$('#VMC-fav-list-'+nick).replaceWith('<li id="VMC-fav-list-'+nick +'\">'+nick+'</li>');
			}
		}
		if (SYS.Messenger.arraySearch(this.chatterList,nick))
		{
			$('#VMC-chatter-' + nick).remove();
			this.chatterList=SYS.Messenger.arrayRemove(SYS.vimuaChat.chatterList, nick);
			if (SYS.vimuaChat.currentNick!=nick)
			{
				if(this.isSeller)
				{
					if(isSignOut)
					{
						SYS.vimuaChat.showSystemNotice('<span style="color:red;">' + nick+ '</span> đã thoát khỏi hệ thống!',5000);
					}
					else
					this.showSystemNotice( nick+' đang bận, kết nối tạm thời bị ngắt!',6000);
				}
				this.removeWindow(nick);
			}
			else
			{
				if(this.chatterList.length > 0)
				{
					this.nickFocus(this.chatterList[0]);
				}
				else
				{
					this.currentNick = '';
					if (!this.isSeller)
					{
						SYS.vimuaChat.showSystemNotice('<span style="color:red;">' + nick+ '</span> đã thoát khỏi hệ thống! Bạn vui lòng đợi kết nối đến người bán khác!',6000);
						SYS.vimuaChat.selectSeller();
					}
					else
					{
						SYS.vimuaChat.showSystemNotice('<span style="color:red;">' + nick+ '</span> đã thoát khỏi hệ thống!',5000);
					}

				}
			}
		}
	},
	addNick:function(nick)
	{
		if (!SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList,nick))
		{
			SYS.vimuaChat.chatterList.push(nick);
		}
		if ($('#VMC-chatter-' + nick).length==0)
		{
			var newNode='<li id="VMC-chatter-' + nick + '" class="VMC-chatter-list" style="white-space: nowrap;" ><span class="span-button" onclick="SYS.vimuaChat.nickFocus(\''+nick+'\');SYS.vimuaChat.isMouseClickOutside = 0;" ><span id="message_count_'+SYS.vimuaChat.id +'_' + nick + '" style="background-color:white; margin-right:5px; white-space: nowrap;" ></span>' + nick + '</span></li>';
			$('#list-buddy').append(newNode);
		}
	},
	connectChat:function(nick)
	{

		var that=this;

		if ((this.requestingNick != nick) &&	(!SYS.Messenger.arraySearch(that.friendList,nick)))
		{
			if(!SYS.Messenger.arraySearch(that.buddyQueue,nick))
			{
				SYS.Messenger.debug('connectChat sendDisconnectMessage:'+this.requestingNick+' != '+nick);
				that.sendDisconnectMessage(nick);
				return false;
			}
		}else{
			this.requestingNick = '';
			this.addTab(nick);
			this.showWindow();
			SYS.Messenger.debug('connectChat'+$.toJSON(this.chatterList));
			var notice=!this.isSeller?'Hệ thống đã kết nối thành công bạn với người bán <b>' + nick+'</b>':'Hệ thống đã kết nối thành công bạn với người mua <b>' + nick+'</b>'
			$('#chat-connect-ttv-loadding').html('');
			this.showSystemNotice(notice,5000);
			that.nickFocus(nick);
			if (SYS.vimuaChat.content!=''&& !this.isSelectFavourist){
				SYS.vimuaChat.sendMessage(SYS.vimuaChat.content,SYS.Messenger.QUOTE_MESSAGE_TYPE);
			}
			this.isSelectFavourist=false;
			SYS.vimuaChat.broadcastMessage(nick);
			if(this.custom_product_id)
			{
				this.selectProduct(nick, this.custom_product_id);
				this.custom_product_id = 0;
			}
		}
	},
	chooseCustomer:function(nick)
	{
		return false;
		if (!(SYS.vimuaChat.canChat(nick)) )
		{
			SYS.vimuaChat.currentNick='';
			this.showSystemNotice('Người mua này đã có người phục vụ. Bạn hãy chọn người mua khác!',3000);
			return false;
		}
		if (!SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList,nick) && (SYS.vimuaChat.chatterList.length < this.MAXIMUM_CHAT_ACCOUNTS))
		 {
			this.requestConnect(nick);
		 } else {
			if (!SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList,nick))
			{
				alert('Bạn không được chát với quá '+ SYS.vimuaChat.MAXIMUM_CHAT_ACCOUNTS +' người mua!') ;
				return false;
			 }
		 }
	},
	chooseSeller:function(nick)//Người mua chọn người bán trong favourist
	{
		this.isSelectFavourist = true;
		this.requestConnect(nick);
	},
	chooseSellerFromList:function(nick)
	{
	//-----------------------------------------------------------------------------------------------------------------------
	$('#chat-connect-ttv-loadding').html('<img src="/portals/vimua/skins/default/images/loading.gif" height="20px"/> Hệ thống đang kết nối với TVV...')
	this.showSystemNotice('Hệ thống đang tìm kết nối với TVV <b>'+nick+'</b> Xin vui lòng chờ một chút.',6000);
	var checkSellerReady = false;
	SYS.vimuaChat.isSelectFromList = true;
	SYS.vimuaChat.SelectFromListTime = 0;
	this.showWindow();
	
	var that = this;
	setTimeout(function(){
		for(i in that.buddyQueue) {
			if (that.buddyQueue[i] == nick){
				checkSellerReady = true;
				break;
			}
		}
		if (!checkSellerReady) {
			SYS.Messenger.debug('chooseSellerFromList:'+nick+checkSellerReady);
			SYS.vimuaChat.buddyList[nick]={id:nick, chatCounter:0, lastTime:new Date().getTime()/1000, productId:'', productName:'', products:[]};
			if (!SYS.Messenger.arraySearch(SYS.vimuaChat.buddyQueue,nick))
				{
					var i = 0;
					// nếu không phải là tư vấn viên
					if(!SYS.vimuaChat.isSeller)
					{
						// tìm vị trí chèn vào danh sách
						for(i = 0; i < SYS.vimuaChat.buddyQueue.length; i++)
						{
							if(!SYS.Messenger.arraySearch(SYS.vimuaChat.friendList, SYS.vimuaChat.buddyQueue[i]))
							{
								break;
							}
						}
					}
					SYS.vimuaChat.buddyQueue.splice(i,0,nick);
				}
			checkSellerReady = true;
		}else{
			SYS.Messenger.debug('chooseSellerFromList:'+nick+checkSellerReady);
		}
		if(checkSellerReady){
			SYS.vimuaChat.SelectFromListTime =  parseInt(new Date().getTime()/1000);
			if(that.currentNick != ''){
				if(confirm("Bạn đang chat với "+that.currentNick+" Bạn có muốn chuyển sang chat với tư TVV "+nick+" không?")){
					SYS.vimuaChat.sendDisconnectMessage(that.currentNick);
				}else{
					return;
				}
			}
			SYS.vimuaChat.requestingNick = nick;
			that.requestingTime = new Date().getTime()/1000;
			SYS.vimuaChat.requestConnect(nick);
			that.buddyQueue = SYS.Messenger.arrayRemove(that.buddyQueue,nick);
			that.buddyQueue.push(nick);
		}else{
			SYS.vimuaChat.isSelectFromList = false;
			alert('Tư vấn viên này chưa sẵn sàng để chat!');
			that.hideWindow();
			return;
		}
	},5000);
			
	//-----------------------------------------------------------------------------------------------------------------------		
	},
	nickFocus:function(nick)//Chuyen nguoi mua hien tai
	{
		if (SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList,nick))
		{
			this.showChatWindow(nick);
			this.currentNick=nick;
			SYS.vimuaChat.updateProductPrice();
			$('.VMC-chatter-list').css('backgroundColor','#FFFFFF');
			$('.VMC-chatter-list').css('color','#335599');
			$('#message_count_'+SYS.vimuaChat.id +'_' + nick).css('background-color','transparent');
			$('#message_count_'+SYS.vimuaChat.id +'_' + nick).text('');
			$('#VMC-chatter-'+ nick).css({
				backgroundColor:'#4D9FF7',
				color:'#FFFFFF',
				fontWeight:'bold'
			});
		}
	},
	initEvents:function(success) //
	{
		var that = this;
		
		$('a[href="#show-vimuachat"]').click(function(){
			SYS.vimuaChat.dontOpenChatWindow = false;
			SYS.vimuaChat.isSelectFromList = false;
			SYS.vimuaChat.blink=false;
			if (!that.isHide)
				SYS.vimuaChat.hideWindow();
			else
				SYS.vimuaChat.showWindow();
		});

		$('#vimuachat .toolbar a[href="#minimize"]').click(function(){
			SYS.vimuaChat.hideWindow();
		});
		$('#vimuachat .container #vimuachat_list ul.usertab li a[href="#all"]').click(function(){
			$(this).parents('ul').find('li').removeClass('current');
			$(this).parent().addClass('current');
			$('.list_all').show();
			$('ul.list_fav').hide();
		});
		$('#vimuachat .container #vimuachat_list ul.usertab li a[href="#fav"]').click(function(){
			$(this).parents('ul').find('li').removeClass('current');
			$(this).parent().addClass('current');
			$(' ul.list_fav').show();
			$('.list_all').hide();
		});
		$(function(){
			setTimeout(function(){
				// neu khong phai la khach thi hien khung chat
				if (!SYS.User.id.match('Guest_')) {
					that.showWindow();
				}
			},100);
		});

	},
	initChatEvents: function()
	{
		var that = this;
		$("#keyword" + that.id).keypress(function (e)
		{
			if 	(e.which==13)
			{
				$("#search" +that.id).click();
				return false;
			}

		});
		$("#keyword" + that.id).focus(function()
		{
			$(this).val('');
			return false;
		});
		$("#costInput" + that.id).keypress(function (e)
		{
			if 	(e.which==13)
			{
				SYS.vimuaChat.updateProductPrice();
				SYS.vimuaChat.sendPrice();
				return false;
			}

		});
		$("#costInput" + that.id).focus(function()
		{
			price=$("#costInput" + that.id).val();
			if (parseInt(price)!=price)
				$(this).val('');
			return false;
		});
		if(!this.isInited)
		{
			this.isInited = true;
			//////////////// Message Submission Form Handling
			VkMessenger.addEngineStatusChangedCallback("onchanged",function(newStatus){
					if (newStatus == "DISCONNECTED" || newStatus == "CONNECTING" || newStatus == "STALLED") {
						//that.disableForm();
					 }
				 else
				 {
					//that.enableForm();
				}
				SYS.Messenger.showStatus(newStatus, VkMessenger.pushPage.isMasterPushPage());
			});

			VkMessenger.addEngineLostCallback("onlost",function(){
//					that.disableForm();
					SYS.Messenger.showStatus("Chờ kết nối đến server...");
					VkMessenger.engineRef = null;
			});
			//VkMessenger.initPushPage("hatn.com","messenger.hatn.com");
			VkMessenger.initPushPage("vimua.com","chat1.vimua.com");
			// nhận và tách message
			VkMessenger.addMessageCallback("render",function(messages)
			{
				for (var i=0;i < messages.length;i++)
				{
					SYS.Messenger.addMessageCallBack(messages[i]);
				}
			});
			document.onkeydown = SYS.Messenger.checkEscape;
			document.onkeypress = SYS.Messenger.checkEscape;
			this.submitNick();
			t= new Date().getTime()/1000;
			this.startTime = SYS.vimuaChat.lastTime = t;
			setInterval ('SYS.vimuaChat.checkState()',10000);
		}
	},
	selFilter: function(word) // Xử lý việc tìm kiếm sản phẩm
	{

		var that = this;
		if(word)
		{
			$('#keyword'+that.id).val(word);
		}
		if ($('#listSearchChat:visible').length>0)
		{
			$('#listSearchChat:visible').hide();
			return false;
		}
		$('#listSearchChat').load(this.submitURL({cmd:'search_product',keyword:$('#keyword'+that.id).val()}), function(response)
		{
			if (response==0)
			{
				SYS.vimuaChat.showSystemNotice("Không tìm thấy sản phẩm nào! Bạn hãy thử tìm với từ khóa khác",6000);
			}
			else
			{
				$('.VMC-show-hide'+SYS.vimuaChat.id).click(function(){
					SYS.vimuaChat.isMouseClickOutside = 0;
				})
				$('#listSearchChat').toggle();
			}
		});
	},
	selectProduct:function(nick,productId,success, dontSendMessage)// Xử lý việc chọn một sản phẩm.
	{
		$('#listSearchChat').hide();
		var userId = (nick!='')?nick:this.currentNick;
		var currentShowroom = $("#vimuachat_show"+this.id+"_"+userId);

		if (this.currentNick=='')
		{
			if(this.isSeller)
			{
				this.showSystemNotice('Bạn chưa chat với ai nên không chọn được sản phẩm',4000,1);
			}
			else
			{
				this.custom_product_id = productId;
				this.showSystemNotice('Xin đợi tìm tư vấn viên...',4000,1);
				this.selectSeller();
				return;
			}
		}
		else
			this.showWindow();
		var that = this;
		if(currentShowroom.length > 0)
		{
			$('#costInput'+this.id).val('');
			if(typeof(that.products[productId]) == 'undefined')
			{
				$.getJSON(this.submitURL({cmd:'select_product',product_id:productId, userId:userId}),function(product){
					that.products[productId] = product;
					that.drawShowroom(userId, productId);
					that.buddyList[userId].products.push(productId);
					if(typeof(success) == 'function')
					{
						success.call(that);
					}
					if(typeof(dontSendMessage) == 'undefined' || !dontSendMessage)
					{
						that.sendPicture(SYS.image(that.products[productId].large)+'||'+productId);
					}
				});
			}
			else
			{
				that.drawShowroom(userId, productId);
				if(typeof(success) == 'function')
				{
					success.call(that);
				}
				if(typeof(dontSendMessage) == 'undefined' || !dontSendMessage)
				{
					that.sendPicture(SYS.image(that.products[productId].large)+'||'+productId);
				}
			}

		}
	},
	calculateShippingFee: function(zoneId, packWeight, district_id, afterTax)
	{
		var that=this;
		var zone_location = this.zone_location[zoneId];
		if(!zone_location) return 0;
		SYS.Messenger.debug($.toJSON(zone_location));
		var loc = this.locations[zone_location.location_id];
		if(!loc) return 0;
		SYS.Messenger.debug('location_id'+loc.id);
		var feeId = 0;
		packWeight=parseFloat(packWeight);
		for(var i in this.transportFee)
		{
			if(this.transportFee[i].location_id == loc.id)
			{
				feeId = i;
				if((this.transportFee[i].min_weight < packWeight) && (this.transportFee[i].max_weight >= packWeight))
				{
					SYS.Messenger.debug(packWeight+','+i+','+this.transportFee[i].min_weight+','+this.transportFee[i].max_weight);
					break;
				}
			}
			i++;
		}
		var fee = this.transportFee[feeId];
		SYS.Messenger.debug(packWeight+','+loc.id+','+fee.min_weight+','+fee.max_weight+','+loc.addition_fee+','+fee.shipping_fee);
		
		if(afterTax>=1000000)
			return that.additionShippingFee(district_id)*1.0;
		else	
			return (parseFloat(fee.shipping_fee) + parseFloat(((packWeight > fee.max_weight)?Math.ceil((packWeight - fee.max_weight)/loc.addition_weight):0) * loc.addition_fee))*1.1+that.additionShippingFee(district_id)*1.0;
	},
	additionShippingFee:function(district_id)
	{
		return this.districts[district_id].addition_fee
	},
	calculateDiscountValue: function(product, price)
	{
		if(this.time >= product.discount_start_date && this.time <= product.discount_end_date && product.discount_items < product.discount_maximum_items)
		{
			return Math.floor((price*(100 + parseInt(product.discount_percent)))/100);
		}
		return 0;
	},
	changeProvince:function(province_id)
	{
		var that=this;
	 		var districts=that.districts;
	 		var options='<option value="0">Chọn khu vực</option>'
	 		for (var i in districts)
	 		{
	 			if (districts[i].province_id==province_id)
	 				options+='<option value="'+ districts[i].id +'">'+districts[i].name+'</option>';
	 		}
			if(province_id != '' && typeof(province_id) != 'undefined'){
				$('#VMC-district-select'+that.id).html(options);
	 			$('#VMC-district-select'+that.id).val(0);
			} 		
	},
	updateProductPrice: function(district_id)
	{
		if (typeof(district_id)=='undefined')
			district_id=$('#VMC-district-select'+this.id).val();
		if(this.currentProductId && SYS.vimuaChat.isSeller)
		{
			var product = this.products[this.buddyList[this.currentNick].productId];
			if(product)
			{
				var price = $('#costInput'+this.id).val();
				if(price != parseInt(price) || price/1000 < product.min_price || price/1000 > product.price)
				{
					price = product['price']*1000;
				}
				var discountValue = this.calculateDiscountValue(product, price);
				// giá đã bao gồm cả thuế
				var	afterTax = price;
				if (district_id!=0)
				{
					var shippingFee = this.calculateShippingFee($('#VMC-zone').val(), product.pack_weight,district_id,afterTax);
					$('#shipping_fee_'+this.id).text(SYS.numberFormat(shippingFee));
					//$('#amount_'+this.id).text(SYS.numberFormat(afterTax - discountValue + shippingFee*1.0));
					$('#amount_'+this.id).text(SYS.numberFormat(parseInt(afterTax) + shippingFee*1.0));
				}
				$('#costInput'+this.id).val(price);
				$('#price_'+this.id).text(SYS.numberFormat(price));
//				$('#tax_'+this.id).text(SYS.numberFormat(afterTax));
				$('#discount_value_'+this.id).text(SYS.numberFormat(discountValue));

			}
		}
	},
	drawShowroom: function(userId, productId)
	{
		var showroomId = "vimuachat_show"+this.id+"_"+userId;
		var showroom = $('#'+showroomId);
		if(showroom.length > 0 && this.products[productId])
		{
			var product = this.products[productId]
			if($('#picture-tab'+userId).length > 0)
			{
				var	st = '<li><a class="span-button" onclick="SYS.vimuaChat.sendPicture(\''+SYS.image(product.large)+'||'+product.id+'\');" title="Ảnh sản phẩm" ><img src="'+SYS.image(product.thumbnail)+'" alt="Product Thumbnail" width="50" height="50" /><span class="photo"></span></a></li>';
				for(var i in product.images){
					st += '<li><a class="span-button" onclick="SYS.vimuaChat.sendPicture(\''+SYS.image(product.images[i].large)+'||'+product.id+'\');" title="Ảnh sản phẩm" ><img src="'+SYS.image(product.images[i].thumbnail)+'" alt="Product Thumbnail" width="50" height="50" /><span class="photo"></span></a></li>';
				}
				if(product.media){
					st += '<li><a class="span-button" onclick="SYS.vimuaChat.sendVideo(\''+SYS.image(product.media)+'||'+product.id+'\');SYS.vimuaChat.isMouseClickOutside = 0;" title="Video sản phẩm" ><img src="'+SYS.image(product.thumbnail)+'" alt="Video sản phẩm" width="50" height="50" /><span class="video"></span></a></li>';
				}
				if(product.flash){
					st += '<li><a	class="span-button" onclick="SYS.vimuaChat.sendFlash(\''+SYS.image(product.flash)+'||'+product.id+'\');SYS.vimuaChat.isMouseClickOutside = 0;" title="Xem 360" ><img src="'+SYS.image(product.thumbnail)+'" alt="Flash sản phẩm" width="50" height="50" /><span class="flash"></span></a></li>';
				}
				st += '<li><a class="span-button" onclick="SYS.vimuaChat.sendProperties(\''+product.id+'\');SYS.vimuaChat.isMouseClickOutside = 0;" title="Thông số sản phẩm" ><img src="'+SYS.image(product.thumbnail)+'" alt="Đặc tính kỹ thuật" width="50" height="50" /><span class="info"></span></a></li><li style="background-color:#AAA; width:2px; height:54px;">&nbsp;</li>';
				if (!SYS.Messenger.arraySearch(SYS.vimuaChat.buddyList[userId].products,productId))
					$('.scroll ul', showroom).prepend(st);
				$('.showroomDetail', showroom).hide();
				$('#picture-tab'+userId).attr('src', SYS.image(product.large)).show();
			}
			else
			{
				this.products[productId].userId = userId;
				SYS.parse(showroomId, 'show-room-template'+this.id, this.products[productId]);
			}
			$('#price'+userId).html(SYS.numberFormat(product.price*1000));
			$('#product-name'+userId).html(product.name);
			this.buddyList[userId].productId = productId;
			if (SYS.vimuaChat.isSeller)
			{
				$('#min-price'+userId).html(SYS.numberFormat(product.min_price*1000));
				if(product.quantity <=3){
					$('#lessProduct'+userId).html('<p><div style="clear:both;color:red;text-align: center;padding-left:15px;" title="Tư vấn viên cần confirm với Điều phối viên về việc còn hàng hay ko?"><Blink>Sắp hết hàng</Blink></div></p>');
				} else {
					$('#lessProduct'+userId).html('');
				}
				this.updateProductPrice();
			} else {
				$('#lessProduct'+userId).html('');
			} 
			showroom.mouseover(function () {
				$('.scroll', $(this)).show();
			}).mouseout(function(){
				$('.scroll', $(this)).hide();
			});
		}
	}
});

$.extend(SYS.Messenger,
{
	INTRODUCTION_TYPE : 0,
	MESSAGE_TYPE : 1,
	WEBCAM_TYPE : 2,
	BUZZ_TYPE: 3,
	MEDIA_TYPE: 4,
	IMAGE_TYPE: 5,
	FLASH_TYPE: 6,
	PROPERTIES_TYPE:7,
	STATE_TYPE:8,
	SELLER_INFO:9,
	CUSTOMER_INFO:10,
	BROADCAST_TYPE:11,
	REQUEST_CONNECT_TYPE:12,
	CONNECT_TYPE:13,
	DENY_CONNECT_TYPE:14,
	DISCONNECT_TYPE:15,
	PRICE_TYPE:17,
	CUSTOMER_BARGAIN_TYPE: 20,
	SALESMAN_BARGAIN_TYPE: 21,
	CUSTOMER_ACCEPT_TYPE: 22,
	SALESMAN_ACCEPT_TYPE: 23,
	CUSTOMER_DONT_ACCEPT_TYPE : 24,
	SALESMAN_DONT_ACCEPT_TYPE : 25,
	QUOTE_MESSAGE_TYPE : 30,
	emoticons:{},
	Dialog:{},
	statusContainer : document.getElementById("statusDiv"),
	addMessageCallBack:function(message)
	{
		if (message)
		{
			SYS.Messenger.debug(message.Type+'('+message.Content + '):'+message.From +'->'+ message.To);
			var d = new Date();
			var t = d.getTime();

						switch (message.Type)
						{
								case 'TEXT':
										var content=message.Content+'';
					var splitPos = content.indexOf("||");
					if (splitPos>0 && typeof(SYS.vimuaChat.buddyList[message.From])!='undefined')
					{
						var messageType = parseInt(content.substr(0, splitPos));
						var messageContent=content.substr(splitPos+2);
						var t= new Date().getTime()/1000;
						var productSplitPos = messageContent.indexOf("||");
						if(productSplitPos>=0)
						{
							var param1 = messageContent.substr(0,productSplitPos);
							var param2 = messageContent.substr(productSplitPos+2);
						}
						SYS.vimuaChat.buddyList[message.From].lastTime=t;

						if(messageType == SYS.Messenger.MESSAGE_TYPE ||
							messageType == SYS.Messenger.BUZZ_TYPE ||
							messageType == SYS.Messenger.CUSTOMER_BARGAIN_TYPE ||
							messageType == SYS.Messenger.SALESMAN_BARGAIN_TYPE ||
							messageType == SYS.Messenger.PRICE_TYPE ||
							messageType == SYS.Messenger.PROPERTIES_TYPE ||
							messageType == SYS.Messenger.MEDIA_TYPE ||
							messageType == SYS.Messenger.FLASH_TYPE ||
							messageType == SYS.Messenger.IMAGE_TYPE)
						{
							if(!SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList, message.From)
								&& SYS.vimuaChat.requestingNick != message.From)
							{
								if(SYS.vimuaChat.isSeller)
								{
									SYS.vimuaChat.acceptConnect(message.From);
								}
								else
								{
									if (SYS.vimuaChat.currentNick=='')
										SYS.vimuaChat.requestConnect(message.From);
									else
										SYS.vimuaChat.sendDisconnectMessage(message.From);
								}
							}
							else
							{
								SYS.Messenger.startBlink(message.From+' đang gọi!!!');
							}
						}

												switch (messageType)
												{
														case SYS.Messenger.MESSAGE_TYPE:

																SYS.vimuaChat.renderTextMsg(message,messageContent, 0);
																break;
							 case SYS.Messenger.QUOTE_MESSAGE_TYPE:
								if(messageContent.indexOf('<a href="javascript:SYS.Page.load({\'page\': \'salesman_profile\', \'id\': \''+SYS.User.id+'\', \'url_mode\': \'ajax\'}); void(0);"') == -1)
								{
									SYS.vimuaChat.renderTextMsg(message,messageContent, 1);
								}
																break;
														case SYS.Messenger.BUZZ_TYPE:
																SYS.vimuaChat.renderBuzzMsg(message,messageContent);
																break;
														case SYS.Messenger.CUSTOMER_BARGAIN_TYPE:
																SYS.vimuaChat.renderCustomerBargainMsg(message,messageContent);
																break;
														case SYS.Messenger.SALESMAN_BARGAIN_TYPE:
								if(productSplitPos)
								{
									SYS.vimuaChat.renderSalesmanBargainMsg(message,param1, param2);
								}
																break;
							 case SYS.Messenger.PRICE_TYPE:
																SYS.vimuaChat.renderPriceMsg(message,messageContent);
																break;
														case SYS.Messenger.IMAGE_TYPE:
								if(productSplitPos)
								{
									SYS.vimuaChat.renderImage(message,param1, param2);
								}
																break;
														case SYS.Messenger.PROPERTIES_TYPE:
								SYS.vimuaChat.renderProperties(message, messageContent);
																break;
														case SYS.Messenger.MEDIA_TYPE:
								if(productSplitPos)
								{
									SYS.vimuaChat.renderVideo(message,param1, param2);
								}
																break;
														case SYS.Messenger.FLASH_TYPE:
								if(productSplitPos)
								{
									SYS.vimuaChat.renderFlash(message,param1, param2);
								}
																break;
							case SYS.Messenger.BROADCAST_TYPE:
								if (parseInt(messageContent)==messageContent)
									if (typeof(SYS.vimuaChat.buddyList[message.From])!='undefined')
										SYS.vimuaChat.buddyList[message.From].chatCounter=parseInt(messageContent);
								else
									if (messageContent!='!@#IDLE')
									{
										if (typeof(SYS.vimuaChat.buddyList[message.From])!='undefined')
											SYS.vimuaChat.buddyList[message.From].chatCounter++;
										if (typeof(SYS.vimuaChat.buddyList[messageContent])!='undefined')
										SYS.vimuaChat.buddyList[messageContent].chatCounter++;
									}
									else
									{
										if(SYS.Messenger.arraySearch(SYS.vimuaChat.buddyQueue,message.From))
										{
											SYS.vimuaChat.buddyQueue=SYS.Messenger.arrayRemove(SYS.vimuaChat.buddyQueue,message.From);
											SYS.vimuaChat.buddyQueue.push(message.From);
										}
										if(SYS.Messenger.arraySearch(SYS.vimuaChat.buddyQueue,message.To))
										{
											SYS.vimuaChat.buddyQueue=SYS.Messenger.arrayRemove(SYS.vimuaChat.buddyQueue,message.To);
											SYS.vimuaChat.buddyQueue.push(message.To);
										}
									}
																break;
							case SYS.Messenger.REQUEST_CONNECT_TYPE:
								if (SYS.vimuaChat.isSeller)
								{
									SYS.vimuaChat.processRequest(message.From);
								}
								break;
							case SYS.Messenger.CONNECT_TYPE:
									if (message.From!=SYS.User.id && !SYS.vimuaChat.isSeller)
										SYS.vimuaChat.connectChat(message.From);
								break;
							case SYS.Messenger.DENY_CONNECT_TYPE:
								if (message.From!=SYS.User.id)
									SYS.vimuaChat.proccessDenyconnect(message.From);
								break;
							case SYS.Messenger.DISCONNECT_TYPE:
									SYS.vimuaChat.proccessDisconnect(message.From,0);
								break;
														default:
												}
					}
										break;
				case 'SIGNOUT':
						SYS.Messenger.debug(message.From+': Đã thoát khỏi hệ thống!');
						SYS.vimuaChat.proccessDisconnect(message.From,1);
					break;
						}
		}
	},
	createBuddyTable:function (name, type)//Ham lay danh sach khach hang
	{
		var ctm_group = "vm_"+(SYS.vimuaChat.isSeller?'c':'s')+"_datatable";
		var ctm_schema = ["command", "key","info"];
		var ctmTable = new DynaMetapushTable(ctm_group, ctm_schema, "COMMAND");

		ctmTable.setDataAdapter("IM_MESSENGER_ADAPTER");
		ctmTable.setSnapshotRequired(true);
		ctmTable.setMetapushSort(null);

		ctmTable.onStart = function(){
			VkMessenger.initConnection(name, "vimua", type);
		}
		ctmTable.onChangingValues = function(domNode, visualUpdateInfo) {
			if (visualUpdateInfo != null && visualUpdateInfo.getServerValue("command") == "ADD")
			{
				var key = visualUpdateInfo.getServerValue("key");
				SYS.Messenger.debug('Add '+key);
				//Đưa thông tin vào bảng buddy
				// luôn khởi tạo số lượng chatter mà user này đang chat là 0
				SYS.vimuaChat.buddyList[key]={id:key, chatCounter:0, lastTime:new Date().getTime()/1000, productId:'', productName:'', products:[]};
				// nếu người này không có trong danh sách sẵn sàng chat
				if (!SYS.Messenger.arraySearch(SYS.vimuaChat.buddyQueue,key))
				{
					var i = 0;
					// nếu không phải là tư vấn viên
					if(!SYS.vimuaChat.isSeller)
					{
						// tìm vị trí chèn vào danh sách
						//???????????????????????????
						for(i = 0; i < SYS.vimuaChat.buddyQueue.length; i++)
						{
							if(!SYS.Messenger.arraySearch(SYS.vimuaChat.friendList, SYS.vimuaChat.buddyQueue[i]))
							{
								break;
							}
						}
					}
					SYS.vimuaChat.buddyQueue.splice(i,0,key);
				}
				if (SYS.Messenger.arraySearch(SYS.vimuaChat.friendList,key))
				{
					var newUser =	'<li id="VMC-fav-list-'+key +'\" style="white-space:nowrap;"><span	class="span-button" onclick="SYS.vimuaChat.choose'+(SYS.vimuaChat.isSeller?'Customer':'Seller')+'(\''+key+'\');" >'+key+'</span></li>';
					$('#VMC-fav-list-'+key).replaceWith(newUser);
				}
			}
		};
		// handle disappearing rows
		ctmTable.onItemUpdate = function(itemPos, updateItemInfo, itemName) {
			if (updateItemInfo != null && updateItemInfo.getNewValue("command") == "DELETE")
			{
				var nick=updateItemInfo.getNewValue("key")
				SYS.Messenger.debug('Delete '+nick);
				SYS.vimuaChat.proccessDisconnect(nick,1);
				if(SYS.vimuaChat.buddyList[nick])
				{
					delete SYS.vimuaChat.buddyList[nick];
				}
				if(VkMessenger.buddies[nick])
				{
					delete VkMessenger.buddies[nick];
				}
			}
		};

		var pushPage = VkMessenger.pushPage;
		pushPage.addTable(ctmTable, "VMC-Buddy-Table");
	},
	checkEscape:function(e)
	{
		if(!e) e = event;
		if(e.keyCode == 27) return false;
	},
	showStatus:function (newStatus, isMaster)
	{
		if (SYS.Messenger.statusContainer)
		{
			if (newStatus == "DISCONNECTED" || newStatus == "CONNECTING" || newStatus == "STALLED")
			{
				if (isMaster)
					newStatus += " (Máy chủ)";
				SYS.Messenger.statusContainer.innerHTML = newStatus;
				$(SYS.Messenger.statusContainer).show();
			}
			else
				$(SYS.Messenger.statusContainer).hide();

		}0
	},
	arraySearch: function(arr,value)
	{
		for (var i=0; i < arr.length; i++)
		{
			if (arr[i]==value)
			return true;
		}
		return false;
	},
	arrayRemove: function(arr,value)
	{
		for (var i=0; i < arr.length; i++)
		{
			if (arr[i]==value)
			 arr.splice(i,1);
		}
		return arr;
	},
	arrayShow: function(arr)
	{
		var st = arr.join();
		alert(st);
	},
	startBlink: function(title)
	{
		if(!SYS.vimuaChat.blinkTimeout)
		{
			var obj = $('#vimua-message-count');
			SYS.vimuaChat.oldTitle = document.title;
			SYS.vimuaChat.blinkTitle = title;
			SYS.vimuaChat.blinkNumber = 0;
			SYS.vimuaChat.blinkOldState={
				left:obj.css('margin-left'),
				size:obj.css('font-size'),
				color:obj.css('background-color')
			};
		}
		document.title=(typeof(SYS.vimuaChat.blinkTitle)=='string')?SYS.vimuaChat.blinkTitle.substr(Math.round(SYS.vimuaChat.blinkNumber/2) % SYS.vimuaChat.blinkTitle.length):SYS.vimuaChat.oldTitle.substr(Math.round(SYS.vimuaChat.blinkNumber/2) % SYS.vimuaChat.oldTitle.length);
		if (SYS.vimuaChat.isHide)
		{
			var obj = $('#vimua-message-count');
			var color=['red','white','blue'];
			obj.parent().css('background-color',color[SYS.vimuaChat.blinkNumber%3]);
		}
		SYS.vimuaChat.blinkNumber = (SYS.vimuaChat.blinkNumber+1)%10000;
		SYS.vimuaChat.blinkTimeout = setTimeout(SYS.Messenger.startBlink, 200);
	},
	endBlink:function()
	{
		if(SYS.vimuaChat.blinkTimeout)
		{
			$('#vimua-message-count').parent().css('background-color',SYS.vimuaChat.blinkOldState.color);
			document.title=SYS.vimuaChat.oldTitle;
			clearTimeout(SYS.vimuaChat.blinkTimeout);
			SYS.vimuaChat.blinkTimeout = 0;
		}
	},
	replaceForLinks: function(message, kitu){
		
		var words = message.split(kitu);
		for (var i = 0; i < words.length; i++) {
			if(typeof(words[i]) == 'string')
			{
				if (words[i].substr(0, 7) == 'http://' || words[i].substr(0, 4) == 'www.') {
					var pos = words[i].lastIndexOf('.');
					var word = '<span class="span-button" onclick="if ($(this).text()==\'[+]\'){$(this).next().next().slideDown();$(this).text(\'[-]\');SYS.vimuaChat.isMouseClickOutside = 0;} else {$(this).next().next().slideUp();$(this).text(\'[+]\');SYS.vimuaChat.isMouseClickOutside = 0;};" ><b>[-]</b>&nbsp</span>&nbsp<a class="link" target="_blank" href="' + words[i] + '">' + words[i] + "</a>";
					if(pos != -1)					{
						var extension = words[i].substr(pos+1);
						switch(extension)
						{
							case 'gif':
							case 'jpg':
							case 'jpge':
							case 'png':
							case 'bmp':
								word += '<div><a target="_blank" href="' + words[i] + '"><img width="100" src="'+ words[i]+'"/></a></div>';
								break;
							case 'flv', 'avi', 'mpg', 'mp4', 'mpge':
								word += '<div><embed height="150" width="200" wmode="transparent" flashvars="file='+words[i]+'" allowscriptaccess="always" allowfullscreen="true" quality="high" name="player" id="player" style="" src="/3rdparty/mediaplayer/player.swf" type="application/x-shockwave-flash"/></div>';
								break;
							case 'swf':
								word += '<div><embed height="150" width="200" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="'+words[i]+'"/></div>';
								break;
						}
					}
					words[i] = word;
				}
				else if (words[i].indexOf("@") >=0 && !/[^a-zA-Z@_\-]/.test(words[i])) {
					words [i] = '<a href="mailto:' + words[i] + '">' + words[i] + "</a>";
				}
				else if(SYS.vimuaChat.isSeller && !/[\<\>]/.test(words[i]))
				{
					words [i] = '<span class="span-button" onclick="javascript:SYS.vimuaChat.selFilter(\'' + words[i].replace(/[\'\"]/g, ' ') + '\');SYS.vimuaChat.isMouseClickOutside = 0;">' + words[i] + "</span>";
				}
			}
		}
		return words.join(kitu);
	},
	checkForLinks: function (message) {
		var st =' ';
		for(var i = 0; i < st.length; i++)
		{
			message = SYS.Messenger.replaceForLinks(message, st[i]);
		}
		return message;
	},
	emoticon: function(st)
	{
		st = st.replace(/\<([^\>]+)\>/g, '&lt;$1&gt;');

		for(var i = 0; i < SYS.Messenger.emoticons.length; i++)
		{
			st = st.replace(SYS.Messenger.emoticons[i].regExpr, ' <img src="'+staticURL+'portals/vimua/skins/default/images/emoticons/'+SYS.Messenger.emoticons[i].id+'.gif"> ');
		}
		return SYS.Messenger.checkForLinks(st);
	},
	debug:function(message)
	{
		if(SYS.vimuaChat.isDebug)
		{
			if($('#messenger-debug-region').length == 0)
			{				
				if($('.page-layout-estore-right').length)
				{
					$('.page-layout-estore-right').append('<div id="messenger-debug-region" style="overflow:scroll; width:260px;height:500px;"><div></div></div>');
				}
				else
				{
					if($('.page-layout-right-region').length)
					{
						$('.page-layout-right-region').append('<div id="messenger-debug-region" style="overflow:scroll; width:260px;height:500px;"><div></div></div>');
					}
					else
						return;
				}
			}
			var queue = '';
			for(var i = 0; i < SYS.vimuaChat.buddyQueue.length; i++)
			{
				var nick = SYS.vimuaChat.buddyQueue[i];
				if(SYS.Messenger.arraySearch(SYS.vimuaChat.chatterList, nick))
				{
					queue += '<b>'+nick+'</b>';
				}
				else
				{
					queue += nick;
				}
				if(SYS.vimuaChat.buddyList[nick])
				{
					queue += '('+SYS.vimuaChat.buddyList[nick].chatCounter+'c, '+(SYS.vimuaChat.buddyList[nick].lastTime?Math.round(SYS.vimuaChat.buddyList[nick].lastTime-SYS.vimuaChat.startTime):0)+'s)';
				}
				queue += ', ';
			}
			$('#messenger-debug-region>div').append('<p>'+message.replace(/\</g, '&lt;').replace(/\>/g, '&gt;')+'<br>QUEUE:'+queue+'</p>').parent().scrollTop($('#messenger-debug-region>div').height());

		}
	}
});



